/**
 * 构造2N的数组，满足一共有K个区间恰好是一个N排列。
 * 以7为例，注意到 12345671234567 ，能够构成最多的排列数量，是 7 + 1
 * 为了减少一个排列，可以将最后两个数交换，12345671234576，于是数量变为了 7 - 1 + 1
 * 再改动为 12345671234765，数量变为了 7 - 2 + 1
 * 可以得到一个按照数量递减的方案
 * 最后1的时候，需要特判，11234567765432即可
 * 为0的话，就是 11223344556677。
 * 再需要特判N为1和N为2的情况
 */
#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;

using llt = long long;
using vi = vector<int>;
using vll = vector<llt>;
using pii = pair<int, int>;
using pll = pair<llt, llt>;

int N, K;
vi A;

void proc(){
    if(1 == N){
        if(2 == K){
            A = {1, 1};
        }else{
            A = {-1};
        }
        return;
    }
    if(2 == N){
        if(0 == K){
            A = {-1};
        }else if(1 == K){
            A = {1, 1, 2, 2};
        }else if(2 == K){
            A = {1, 2, 2, 1};
        }else if(3 == K){
            A = {1, 2, 1, 2};
        }else{
            assert(0);
        }
        return;
    }
    if(0 == K){
        for(int i=1;i<=N;++i){
            A.emplace_back(i);
            A.emplace_back(i);
        }
        return;
    }
    if(1 == K){
        A.emplace_back(1);
        for(int i=1;i<=N;++i) A.emplace_back(i);
        for(int i=N;i>=2;--i) A.emplace_back(i);
        return;
    }

    for(int i=1;i<=N;++i){
        A.emplace_back(i);
    }

    int left = K - 2;
    for(int i=1;i<=left;++i) A.emplace_back(i);
    for(int i=N;i>left;--i) A.emplace_back(i);
    return;
}

void work(){
    cin >> N >> K;
    proc();
    for(auto i : A) cout << i << " ";
    cout << endl;    
    return; 
}


int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);	
    int nofkase = 1;
	// cin >> nofkase;
	while(nofkase--) work();
	return 0;
}